%% 函数说明：多领域交叉结构中的基于次序的交叉法（OBX）
%% 举例：
%   parent1 = [1,2,3,4,5,6,7,8,9],parent2 = [5,4,6,9,2,1,7,8,3]
%   假设非选择元件位置为1，3，4，7，8；即选择的元件段为choose_Intersec = [2,5,6,9]
%   将父代2中选择的元件全部设为0，生成初始子代parent2_child = [0，4,0，0，0，1,7,8,3]；
%   依次将父代1选中的元件依次放入初始子代1的补零位置，生成最终的子代1parent2_child=[2,4,5,6,9,1,7,8,3]
function sequen = LSO_MNSC_OBX(parent1,parent2)
    choose_num = randperm(length(parent1)-1,1);%随机一个数字作为非选择元件位置（不是直接选择元件的序号）
    r = randperm(length(parent1),choose_num);%随机choose_num个非选择元件
%     r = [1,3,4,7,8]; %测试
    choose_Intersec = parent1;
    choose_Intersec(r) = [];%父代1非选择元件全部删掉，剩下的就只有选中的元件
    %在父代2中保留非选择的元件
    parent2_child = parent2;
    for j = 1:length(choose_Intersec)
        parent2_select_index(j) = find(parent2 == choose_Intersec(j));
    end
    parent2_child(parent2_select_index) = 0;%非选择元件全部补零生成初始子代1
    %将父代1选中的元件依次放入子代parent2_child的补零位置
    insert_index = find(parent2_child == 0);
    parent2_child(insert_index) = choose_Intersec;
    sequen = parent2_child;
end
    
    
    
    
    
    